#ifndef MYJSON_H
#define MYJSON_H

#include <QObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QString>
#include "jshandler.h"
#include "customhandler.h"
#include <QList>
#include <QPair>
#include <QDebug>
#include <memory>
#include <QFile>
#include <QFileInfo>
#include "AbstractLayer/Encipher/encipher.h"
class MyJson : public QObject
{
    Q_OBJECT
public:
    static MyJson* getInstance();
    //发送登录信息
    QByteArray logIn(const QString& useroc,const QString& password);
    //发送注销
    QByteArray logOut(const QString& useroc);
    //更新用户的用户名
    QByteArray updateUserName(const QString& useroc,const QString& newname);
    //发送消息
    QByteArray sendMessage(const QString& useroc,const QString& targetoc,const QString& message);

    void myJsonInit(const QString& useroc);
    //解析json报文
    void analysisJson(const QByteArray& decrypt);


    //获取好友信息
    QByteArray getFriendInfo(const QString& useroc,const QString& targetoc);
    //发送好友申请
    QByteArray sendFriendApply(const QString& useroc,const QString& targetoc);
    //发送好友验证
    QByteArray sendFriendApplyResult(const QString& useroc,const QString& targetoc);
    //更新用户oc
    QByteArray updateUserOC(const QString& useroc,const QString& newoc);
    //获取好友列表
    QByteArray getContactList(const QString& useroc);
    //获取用户信息
    QByteArray getUserInfo(const QString& useroc);




    QByteArray testmessage(const QString& type,const QByteArrayList& arglist);

    QByteArray testfile(const QString& type,const QByteArrayList& arglist,const QString& path);


    //更新用户头像
    QByteArray updateUserAvatar(const QString& useroc,const QString& avatarpath);
    //注册
    QByteArray signUp(const QString& useroc,const QString& username,const QString &password,const QString& avatarpath);

    QByteArray sendFileHead(const QString& senderoc,const QString& targetoc,const QString& filepath);

    QByteArray fileBlock(const unsigned int index,const unsigned int blocksize,const QByteArray& fileblock);

    QByteArray sendFileEnd();

    QByteArray fileReady();

signals:

private:
    MyJson();
    static MyJson* myjson;
    QString useroc;
};

#endif // MYJSON_H
